I. Field of the Invention
The present invention pertains generally to the field of communications, and more particularly to computation of soft decision input metrics for turbo decoders.
II. Background
Transmission of digital data is inherently prone to interference, which may introduce errors into the transmitted data. Error detection schemes have been suggested to determine as reliably as possible whether errors have been introduced into the transmitted data. For example, it is common to transmit data in packets and add to each packet a cyclic redundancy check (CRC) field, for example of a length of sixteen bits, which carries a checksum of the data of the packet. When a receiver receives the data, the receiver calculates the same checksum on the received data and verifies whether the result of the calculation is identical to the checksum in the CRC field.
When the transmitted data is not used in real time, it may be possible to request retransmission of erroneous data when errors are detected. However, when the transmission is performed in real time, such as, e.g., in voice calls over traditional telephones or cellular phones, video conference calls, etc., it is not possible to request retransmission.
Convolutional codes have been introduced to allow receivers of digital data to correctly determine the transmitted data even when errors may have occurred during transmission. The convolutional codes introduce redundancy into the transmitted data and pack the transmitted data into packets in which the value of each bit is dependent on earlier bits in the sequence. Thus, when errors occur, the receiver can still deduce the original data by tracing back possible sequences in the received data.
To further improve the performance of a transmission channel, some coding schemes include interleavers, which mix up the order of the bits in the packet during coding. Thus, when interference destroys some adjacent bits during transmission, the effect of the interference is spread out over the entire original packet and can more readily be overcome by the decoding process. Other improvements may include multiple-component codes that encode the packet more than once, in parallel or in series. For example, it is known in the art to employ an error correction method that uses at least two convolutional coders in parallel. Such parallel encoding is commonly referred to as turbo coding.
Turbo codes are serial or parallel concatenations of two or more constituent coders separated by one or more code interleavers. Turbo codes are often decoded with a relatively efficient iterative algorithm to achieve low error rates at signal-to-noise ratios (SNRs) approaching the Shannon limit. The interleavers and deinterleavers are inserted between the component code encoders and decoders, respectively.
As discussed above, the interleaver in a turbo coder spreads the codewords output from an encoder so that individual bits of a given codeword are separated from each other and transmitted at different times. Consequently, individual bits of a given code experience independent fading such that the bits affected by an error burst belong to different codewords. At the receiver, the received samples are deinterleaved prior to decoding. Hence, the effect of the error burst is spread over the message so that it is possible to recover the data with the original error-correcting code. The performance of turbo codes depends on the length and structure of the code interleavers used. Various types of interleavers are known in the art including, e.g., diagonal interleavers, convolutional interleavers, block interleavers, interblock interleavers, and pseudo-random interleavers. Good turbo code performance can be achieved by using interleavers having pseudo-random structures.
Turbo coding represents an important advancement in the area of forward error correction (FEC). There are many variants of turbo coding, but most types of turbo coding use multiple encoding steps separated by interleaving steps combined with the use of iterative decoding. This combination provides previously unattainable performance with respect to noise tolerance in a communications system. Namely, turbo coding allows reliable communications at lower energy-per-bit per noise power spectral density (Eb/NO) than was previously possible using the existing forward error correction techniques.
For multiple-component codes such as turbo codes, optimal decoding is often a very complex task, and may require large periods of time not usually available for on-line decoding. The task may, in fact, be almost impossible, requiring theoretical completion times on the order of the age of the universe. Iterative decoding techniques have been developed to overcome this problem. Rather than determining immediately whether received bits are zero or one, the receiver assigns each bit a value on a multilevel scale representative of the probability that the bit is one. A common scale, referred to as log-likelihood ratio (LLR) probabilities, represents each bit by an integer in some range, e.g., {−32,31}. A. value of 31 signifies that the transmitted bit was a zero with very high probability, and a value of −32 signifies that the transmitted bit was a one, with very high probability. A value of zero indicates that the logical bit value is indeterminate.
Data represented on the multilevel scale is referred to as “soft data,” and iterative decoding is usually soft-in/soft-out, i.e., the decoding process receives a sequence of inputs corresponding to probabilities for the bit values and provides as output corrected probabilities, taking into account constraints of the code. Generally, a decoder that performs iterative decoding uses soft data from former iterations to decode the soft data read by the receiver. During iterative decoding of multiple-component codes, the decoder uses results from decoding of one code to improve the decoding of the second code. When parallel encoders are used, as in turbo coding, two corresponding decoders may conveniently be used in parallel for this purpose. Such iterative decoding is carried out for a plurality of iterations until it is believed that the soft data closely represents the transmitted data. Those bits that have a probability indicating that they are closer to one (for example, values between 0 and 31 on the scale described above) are assigned binary zero, and the remaining values are assigned binary one.
An LLR is thus a probability metric used by a turbo decoder to determine whether a given symbol was transmitted given a particular received symbol. To compute the LLR, an accurate estimate of the SNR and the channel coefficient (a complex scale factor applied to the transmitted signal by the channel) are required. Accurate LLR values are particularly important in turbo decoding applications in which the LLR inputs are typically subjected to nonlinear operations that can amplify inaccuracies in the LLR values and result in unacceptable decoder performance.
It is computationally intensive to compute LLR metrics for dense signal constellations with the high degree of accuracy required. Either an elaborate computation scheme must be employed or a complex decoder structure must be used. Turbo coders are already significantly more complex to implement than are convolutional coders. Hence, it is has proven to be advantageous to maintain the turbo decoder structure at the cost of using a computationally intensive LLR calculation technique. However, it is undesirable to employ a computationally complex LLR calculation algorithm because of the associated drain on processor and memory resources. Moreover, for certain modulation schemes such as eight-ary phase shift keying (8PSK) and sixteen-ary quadrature amplitude modulation (16QAM) it is exceptionally difficult to compute the LLR metrics. It would be desirable to provide a simplified method for deriving the LLR metrics based upon estimation rather than direct computation. Thus, there is a need for a simplified technique for computing the soft-decision input metrics to a turbo decoder without degrading the performance of the decoder.